home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
R-Shows
/
(c)woc x 92a.d64
/
yatzy
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2007-02-04
|
8KB
|
250 lines
0 REM YATZY - ROBERT B. COOK
100 GOSUB380:GOSUB412:GOSUB326
102 GOSUB114:GOSUB174
104 GOSUB202:GOSUB286
106 C1=C1+1:IFC1=NP*13THEN314
108 PL=PL+1:IFPL>NPTHENPL=1
110 GOTO102
112 = START =
114 PRINT"[146][144]"TAB(58)LEFT$("[180][144]#1 [180][144]#2 [180][144]#3 [180][144]#4 [181]",NP*6+2)
116 PRINT""TAB(54+PL*4)" #"MID$(STR$(PL),2)" [146][180]"
118 RL=1:PRINTDN$TAB(36)"[145]"RN$(1)
120 FORL1=1TO5:POKE2040+L1,200:DI(L1)=0:NEXT:POKESP+21,62
122 GOSUB130:IFRL=4THENRETURN
124 GOSUB154:IFRD>0THEN122
126 RETURN
128 = ROLL DICE =
130 FORL1=1TO5
132 IFDI(L1)=0THENDN(L1)=INT(RND(1)*6+1)
134 NEXT
136 FORL1=1TO5:IFDI(L1)=1THEN146
138 T1=INT(RND(1)*6+1)
140 POKEWV,129:POKELF,85:POKEHF,36
142 POKE2040+L1,192+T1:FORL2=1TO25:NEXT:POKEWV,128
144 DI(L1)=1:IFT1<>DN(L1)THEN138
146 NEXT
148 RL=RL+1:IFRL<4THENPRINTDN$TAB(36)"[145]"RN$(RL)
150 RETURN
152 = CHOOSE DICE =
154 POKESP+1,92:POKESP+21,63:RD=0:T1=1
156 JS=PEEK(56320)AND31:IFJS=31THEN156
158 IFJS=15ANDT1=0THENFORL1=1TO5:POKE2040+L1,192+DN(L1):DI(L1)=1:NEXT:RD=0
160 IFJS=15ANDT1=6THEN170
162 IFJS=15ANDT1>0THENPOKE2040+T1,200:RD=RD+1:DI(T1)=0
164 IFJS=29THENT1=T1+1:IFT1>6THENT1=6
166 IFJS=30THENT1=T1-1:IFT1<0THENT1=0
168 POKESP+1,68+24*T1:FORL1=1TO99:NEXT:GOTO156
170 WAIT56320,16,15:RETURN
172 = CHOOSE LINE =
174 POKESP+21,254
176 LN=1:POKESP+15,86
178 JS=PEEK(56320)AND31:IFJS=31THEN178
180 IFJS=15ANDMX(PL,LN)=0THENRETURN
182 IFJS=15THENGOSUB308
184 FORL1=1TO99:NEXT:IFJS=30THEN194
186 IFJS<>29THEN178
188 LN=LN+1:IFLN=7THENLN=11
190 IFLN>17THENLN=1
192 GOTO198
194 LN=LN-1:IFLN=10THENLN=6
196 IFLN<1THENLN=17
198 POKESP+15,78+LN*8:GOTO178
200 = CALCULATE =
202 SC=0:MX(PL,LN)=1
204 ON-(LN<7)GOTO208:GOTO222
206 = UPPER =
208 FORL1=1TO5
210 IFDN(L1)=LNTHENSC=SC+LN
212 NEXT
214 SC(PL,1)=SC(PL,1)+SC:IFSC(PL,1)>62THENSC(PL,2)=35
216 SC(PL,3)=SC(PL,1)+SC(PL,2):SC(PL,5)=SC(PL,3)+SC(PL,4)
218 RETURN
220 = LOWER =
222 T1=0:T2=0:SC=0
224 FORL1=1TO6:CT(L1)=0:NEXT
226 FORL1=1TO5:T2=T2+DN(L1):FORL2=1TO6
228 IFDN(L1)=L2THENCT(L2)=CT(L2)+1
230 NEXT:NEXT
232 ONLN-10GOSUB240,240,250,262,262,274,282
234 SC(PL,4)=SC(PL,4)+SC:SC(PL,5)=SC(PL,3)+SC(PL,4)
236 RETURN
238 * 3 OR 4 OF A KIND *
240 FORL1=1TO6
242 IFLN=11ANDCT(L1)>2THENSC=T2
244 IFLN=12ANDCT(L1)>3THENSC=T2
246 NEXT:RETURN
248 * FULL HOUSE *
250 FORL1=1TO6
252 IFCT(L1)=2THENT1=T1+2
254 IFCT(L1)=3THENT1=T1+3
256 IFT1=5THENSC=25
258 NEXT:RETURN
260 * SMALL STRAIGHT OR LARGE STRAIGHT *
262 FORL1=1TO6
264 T1=T1+1:IFCT(L1)=0THENT1=0
266 IFLN=14ANDT1=4THENSC=30
268 IFLN=15ANDT1=5THENSC=40
270 NEXT:RETURN
272 * YATZY *
274 FORL1=1TO6
276 IFCT(L1)=5THENSC=50
278 NEXT:RETURN
280 * CHANCE *
282 SC=T2:RETURN
284 = PRINT =
286 POKE646,0:IFLN=16THENPOKE646,4
288 PRINTLEFT$(DN$,LN+4)TAB(19+(4*(PL-1)))RIGHT$(" "+STR$(SC),3)
290 GOSUB302
292 FORL=1TO5:T=VAL(MID$("01112132224",L*2,2))
294 POKE646,1:IFL=2THENPOKE646,2
296 PRINTLEFT$(DN$,T)TAB(19+(4*(PL-1)))RIGHT$(" "+STR$(SC(PL,L)),3)
298 NEXT:POKESP+21,62:RETURN
300 = BLIP =
302 POKESR,240:POKEWV,17:POKEHF,50:POKELF,35
304 FORL1=1TO99:NEXT:POKEWV,16:POKESR,0:RETURN
306 = BUZZ =
308 POKESR,240:POKEWV,33:POKEHF,5
310 FORL1=1TO150:NEXT:POKEWV,32:RETURN
312 = END GAME =
314 POKESP+21,0:POKE829,234
316 PRINT" PRESS FIRE "
318 FORL1=1TONP:HS=SC(L1,5):IFHS<=PEEK(829+L1*2)*256+PEEK(830+L1*2)THEN322
320 POKE829+L1*2,HS/256:POKE830+L1*2,(HS/256-INT(HS/256))*256
322 NEXT:WAIT56320,16,16:WAIT56320,16,15:RUN
324 = SCREEN =
326 PRINT"[147][182] [176][192][174][176][192][174][176][192][174][176][192][174][176][192][174] [146][207][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][181][158] "
328 PRINT"[182] [221]Y[221][221]A[221][221]T[221][221]Z[221][221]Y[221] [146][180] [180] [180] [180] [181][158] "
330 PRINT"[182] [173][192][189][173][192][189][173][192][189][173][192][189][173][192][189] [146][204][175][175][175][204][175][175][175][204][175][175][175][204][175][175][175][181][158]UNDO"
332 PRINT"[182][154] HIGH SCORE [146][165] [165] [165] [165] [181][158][183][183][183][183]
334 [153]"ABSSTOPACES........FNSTOPADD FN FN FN FN INT
336 PRINT"[182][144]DEUCES......[165][144]ADD [165] [165] [165] [165] [181]
338 [153]"ABSSTOPTHREES......FNSTOPADD FN FN FN FN INT
340 PRINT"[182][144]FOURS.......[165][144]ADD [165] [165] [165] [165] [181]
342 [153]"ABSSTOPFIVES.......FNSTOPADD FN FN FN FN INT
344 PRINT"[182][144]SIXES.......[165][144]ADD [165] [165] [165] [165] [181]
346 [153]"ABS SUB TOTAL WAITFN FN FN FN INT
348 PRINT"[182] BONUS (63) [146][165]=35 [165] [165] [165] [165] [181]
350 [153]"ABS TOTAL UPPER WAITFN FN FN FN INT
352 PRINT"[182][183][183][183][183][183][183][183][183][183][183][183][183][207][183][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][207][183][183][183][181]
354 [153]"ABSSTOP3 OF A KIND.FNSTOPADD FN FN FN FN INT
356 PRINT"[182][144]4 OF A KIND.[165][144]ADD [165] [165] [165] [165] [181]
358 [153]"ABSSTOPFULL HOUSE..FNSTOP=25 FN FN FN FN INT
360 PRINT"[182][144]SM STRAIGHT.[165][144]=30 [165] [165] [165] [165][160] [181]
362 [153]"ABSSTOPLG STRAIGHT.FNSTOP=40 FN FN FN FN INT
364 PRINT"[182][156]YATZY [146][165][156]=50 [165] [165] [165] [165] [181][129][175][175][175][175]
366 [153]"ABSSTOPCHANCE......FNSTOPADD FN FN FN FN INTFORROLL
368 PRINT"[182] TOTAL LOWER [146][165] [165] [165] [165] [181][129][207][183][183][208]
370 [153]"ABSUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRWAIT(null)USRUSRUSR(null)USRUSRUSR(null)USRUSRUSR(null)USRUSRUSRINTFORFN +
372 PRINT"[182] GRAND TOTAL [146][165] [165] [165] [165] [181][129][165] [167]
374 [153]"ABS WAITINTFOR(null)ANDANDSQRCONT
376 FORL1=1TONP:PRINT"[154]"TAB(15+L1*4)RIGHT$(" "+STR$(HS(L1)),3);:NEXT:RETURN
378 ========== O P T I O N S ===========
380 POKE53281,15:POKE53280,15:NP=1
382 PRINT"[147][156] [176][192][192][192][174][176][192][192][192][174][176][192][192][192][174][176][192][192][192][174][176][192][192][192][174]
384 [153]" (null)(null)(null)WAITSTEP(null)(null)COSPOSLOGWAIT(null)(null)NEW NEWWAIT(null)(null)NEWRNDWAITSTEP(null)(null)(null)(null)WAITSTEP(null)
386 PRINT" [221] [146] [221][221] [146][197] [146][221][221] [146][221][221][169][188][146][162][221][221] [146] [221]
388 [153]" /TANTANTANEXP/TANTANTANEXP/TANTANTANEXP/TANTANTANEXP/TANTANTANEXP
390 PRINT" PRESS JOYSTICK [[156]PORT 2] UP OR DOWN
392 [153]" TO CHANGE NUMBER OF PLAYERS
394 PRINT" PRESS [149]FIRE TO PLAY
396 [153]" HOW MANY PLAYERS?VERIFY";
398 [153][163]27)NP"CMDCMDCMD";
400 JS[178][194](56320)[175]31:[129]L1[178]1[164]75:[130]
402 [139]JS[178]30[167]NP[178]NP[170]1:[139]NP[178]5[167]NP[178]1
404 [139]JS[178]29[167]NP[178]NP[171]1:[139]NP[178]0[167]NP[178]4
406 [139]JS[179][177]15[167]398
408 [153]"LOAD":[142]
410 [178] INITIALIZE [178]
412 PL[178]1:SP[178]53248:R[178][187]([171]TI)
414 LF[178]54272:HF[178]54273:WV[178]54276:SR[178]54278
416 RN$(1)[178]"STEPWAITGETCMDCMDGETWAITGET"
418 RN$(2)[178]"VAL CMDCMD STR$"
420 RN$(3)[178]"VAL CMDCMDSTR$ "
422 DN$[178]"
424 DIM DI(5),MX(4,20),SC(4,5),HS(4)
426 FORL1=LFTOLF+24:POKEL1,0:NEXT:POKELF+24,15
428 IFPEEK(829)=234THEN434
430 FORL1=0TO511:READA:POKE12288+L1,A:NEXT
432 FORL1=512TO575:POKE12288+L1,.:NEXT:POKE830,0:POKE831,0
434 FORL1=1TO5:POKESP+39+L1,1
436 POKESP+2*L1,52:POKESP+1+2*L1,60+L1*24:REM COLOR,X,Y POS
438 NEXT
440 POKE2040,192:POKESP+39,9:POKESP,30:POKESP+1,212:REM LEFT
442 POKE2047,199:POKESP+46,7:POKESP+14,120:POKESP+15,86:REM RIGHT
444 POKESP+16,127
446 FORL1=1TONP:HS(L1)=PEEK(829+L1*2)*256+PEEK(830+L1*2):NEXT
448 RETURN
450 = SPRITE DATA =
452 * LEFTHAND *
454 DATA000,000,000,000,000,000,000,000
456 DATA096,000,000,224,000,001,192,000
458 DATA003,128,000,007,000,028,014,000
460 DATA014,061,192,007,123,064,007,118
462 DATA224,007,189,160,007,219,112,007
464 DATA222,208,007,221,176,003,255,096
466 DATA003,255,192,001,255,128,001,255
468 DATA000,001,254,000,003,252,000,000
470 * ONE *
472 DATA255,255,255,255,255,255,255,255
474 DATA255,255,255,255,255,255,255,255
476 DATA255,255,255,255,255,255,255,255
478 DATA255,231,255,255,195,255,255,195
480 DATA255,255,231,255,255,255,255,255
482 DATA255,255,255,255,255,255,255,255
484 DATA255,255,255,255,255,255,255,255
486 DATA255,255,255,255,255,255,255,000
488 * TWO *
490 DATA255,255,255,255,255,255,255,255
492 DATA207,255,255,135,255,255,135,255
494 DATA255,207,255,255,255,255,255,255
496 DATA255,255,255,255,255,255,255,255
498 DATA255,255,255,255,255,255,255,255
500 DATA255,255,243,255,255,225,255,255
502 DATA225,255,255,243,255,255,255,255
504 DATA255,255,255,255,255,255,255,000
506 * THREE *
508 DATA255,255,255,255,255,255,255,255
510 DATA207,255,255,135,255,255,135,255
512 DATA255,207,255,255,255,255,255,255
514 DATA255,231,255,255,195,255,255,195
516 DATA255,255,231,255,255,255,255,255
518 DATA255,255,243,255,255,225,255,255
520 DATA225,255,255,243,255,255,255,255
522 DATA255,255,255,255,255,255,255,000
524 * FOUR *
526 DATA255,255,255,255,255,255,243,255
528 DATA207,225,255,135,225,255,135,243
530 DATA255,207,255,255,255,255,255,255
532 DATA255,255,255,255,255,255,255,255
534 DATA255,255,255,255,255,255,255,255
536 DATA255,255,243,255,207,225,255,135
538 DATA225,255,135,243,255,207,255,255
540 DATA255,255,255,255,255,255,255,000
542 * FIVE *
544 DATA255,255,255,255,255,255,243,255
546 DATA207,225,255,135,225,255,135,243
548 DATA255,207,255,255,255,255,255,255
550 DATA255,231,255,255,195,255,255,195
552 DATA255,255,231,255,255,255,255,255
554 DATA255,255,243,255,207,225,255,135
556 DATA225,255,135,243,255,207,255,255
558 DATA255,255,255,255,255,255,255,000
560 * SIX *
562 DATA255,255,255,255,255,255,243,255
564 DATA207,225,255,135,225,255,135,243
566 DATA255,207,255,255,255,255,255,255
568 DATA243,255,207,225,255,135,225,255
570 DATA135,243,255,207,255,255,255,255
572 DATA255,255,243,255,207,225,255,135
574 DATA225,255,135,243,255,207,255,255
576 DATA255,255,255,255,255,255,255,000
578 * RIGHTHAND *
580 DATA000,000,000,000,000,000,006,000
582 DATA000,007,000,000,003,128,000,001
584 DATA192,000,000,224,000,000,112,056
586 DATA003,188,112,002,222,224,007,110
588 DATA224,005,189,224,014,219,224,011
590 DATA123,224,013,187,224,006,255,192
592 DATA003,255,192,001,255,128,000,255
594 DATA128,000,127,128,000,063,192,000